package ink.tiptop.learn.convert.test;

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

/**
 * @author zjf
 * @date 2020-08-15 16:07
 * 默认值和常量值的使用
 */
@Mapper(componentModel = "spring",uses = A_StringListConvert.class)
public interface A_DefaultAndConstValConvert {

    //如果 s.getStringProp() == null，则目标属性stringProperty将设置为“undefined”，而不是应用s.getStringProp()中的值。
    // 如果 s.getLongProperty() == null，则目标属性longProperty将设置为-1。
    // 字符串“常量值”按原样设置为目标属性stringConstant。
    // 值“3001”被类型转换为目标属性longWrapperConstant的Long（包装器）类。
    // 日期属性还需要日期格式。
    // 常量“jack-jill-tom”演示了如何调用手写类StringListMapper以将以短划线分隔的列表映射到List <String>。
    @Mappings( {
            @Mapping(target = "stringProperty", source = "stringProp", defaultValue = "undefined"),
            @Mapping(target = "longProperty", source = "longProp", defaultValue = "-1L"),
            @Mapping(target = "stringConstant", constant = "Constant Value"),
            @Mapping(target = "integerConstant", constant = "14"),
            @Mapping(target = "longWrapperConstant", constant = "3001L"),
            @Mapping(target = "dateConstant", dateFormat = "dd-MM-yyyy", constant = "09-01-2014"),
            @Mapping(target = "stringListConstants", constant = "jack-jill-tom")
    } )
    DefaultAndConstValTarget sourceToTarget(DefaultAndConstValSource s);
}
